#include <stdio.h>
#include <unistd.h>

int main()
{
    printf("我是一个父进程，我的pid：%d\n", getpid());
    
    // fork() -> return x -> id:返回的本质是写入
    // id是父进程定义的变量，保存的数据
    // 返回的时候，发生了写时拷贝
    // 父子进程使用一份代码，但是数据发生修改时各自一份
    pid_t id = fork();
    // fork之后用if分流
    if(id < 0) return -1;
    else if(id == 0)
    {
        // child
        while(1)
        {                
            printf("我是子进程，pid:%d, ppid:%d\n", getpid(), getppid());
            sleep(1);
        }
    }
    else 
    {
        // parent
        while(1)
        {
            printf("我是父进程，pid:%d, ppid:%d\n", getpid(), getppid());
            sleep(1);
        }
    }

    return 0;
}
